import { UserInfo } from "../common/UserInfo"

/**
 * 联盟操作类型，调用接口时需要操作类型
 */
export enum AllyOperateType {
    /**创建联盟 */
    Create = 0,
    /**邀请加入联盟 */
    Invite = 1,
    /**拒绝邀请 */
    RefuseInvite = 2,
    /**接受邀请 */
    AcceptInvite = 3,
    /**退出联盟 */
    Quit = 4,
    /**查询联盟相关的数据 */
    Query = 5,
    /**踢出联盟 */
    Kickout = 6,
    /**取消邀请 */
    CancelInvite = 7,
    /**获取联盟 */
    News = 8,
    /**拒绝申请 */
    RefuseApply = 9,
    /**同意申请 */
    AgreeApply = 10,
    /**申请加入联盟 */
    Apply = 11,
    /**取消申请 */
    CancelApply = 12,
}

/**
 * 联盟类
 */
export class Ally {
    // allyId: number
    // allyName: string
    /**联盟ID */
    AllyId: number
    /**联盟名称 */
    AllyName: string
    /**联盟点数 */
    AllyPoint: number
    /**联盟排行 */
    AllyRank: number
    /**平均人口 */
    AvgPeople: number
    /**占领区域 */
    FieldNum: number
    /**玩家数量 */
    PlayerNum: number
    /**联盟名称 */
    AllyCutName: string
    /**邀请的ID */
    InviteId: number
    /**用户ID */
    UserId: number
    /**用户名称 */
    UserName: string

    /**
     * 获取我的联盟
     * @returns 
     */
    static getMyAlly(): Ally {

        let id = UserInfo.instance.villageData.user.allyId
        let name = UserInfo.instance.villageData.user.allyName

        if (id == -1) {
            return null
        }

        let ally = new Ally()
        ally.AllyId = id
        ally.AllyName = name

        return ally
    }

    /**
     * 根据数据对象创建
     * @param obj 
     * @returns 
     */
    static createByObj(obj): Ally {
        let ally = new Ally()
        for (let key in obj) {
            ally[key] = obj[key]
        }
        return ally
    }

    /**
     * 我是不是盟主
     * @returns 
     */
    get isLeader(): boolean {

        return this.AllyId == UserInfo.instance.villageData.uid
    }
}